#ifndef SCENEEXPORT_H
#define SCENEEXPORT_H
#include <QString>
#include "../entity/EntitySceneNode.h"

class SceneExport
{
public:
    /**
     * @brief 获取排序后的场景列表，保证父节点始终在前面
     * @return
     */
    static QList<std::shared_ptr<EntitySceneNode>> SortedSceneNode();

    /**
     * @brief 导出场景
     * @param file 文件夹或ZIP文件
     */
    void Export(const QString& file);

private:
    /**
     * @brief 导出脚本
     */
    void exportScript();
    /**
     * @brief 序列化场景节点
     * @return
     */
    QString serializeScene();
    /**
     * @brief 提取脚本字符串的资源
     * @param script
     */
    void extractAsset(QString& script);

private:
    /**
     * @brief 项目目录
     */
    QString _workDir;
    /**
     * @brief 目标目录
     */
    QString _targetDir;
    /**
     * @brief 资源查找表
     */
    QMap<QString, QString> _assetLUT;
};

#endif // SCENEEXPORT_H
